In order for a three-dimensional (3D) scene to be presented on a stereoscopic display, multiple two-dimensional (2D) projections of the scene, each from a slightly different viewpoint, must be generated. For example, two 2D projections may be generated of a 3D scene, one with a left viewpoint and one with a right viewpoint.
Conventionally, real-time graphics applications, such as video game software applications, must include custom stereoscopic rendering code in order to generate multiple 2D projections from a 3D scene. Conventional real-time graphics applications must therefore be specifically built to be compatible with stereoscopic rendering.
One difficulty encountered in stereoscopic rendering is encountered when rendering a scene that includes both 3D content as well as 2D content. With reference now to FIG. 1, an example scene 100 from a conventional video game is disclosed. As disclosed in FIG. 1, the scene 100 includes 3D content such as human characters 102, vehicles 104, and a building 106. The scene 100 also includes 2D content consisting of a head up display (HUD) 108 that is superimposed over the 3D content of the scene 100. The HUD 108 shows how many points and lives a player has accumulated and how much time remains before the game terminates.
A conventional real-time graphics application can inherently distinguish between 2D content and 3D content in a scene. Where such an application includes custom stereoscopic rendering code, therefore, the application can simply generate a single 2D projection of known 2D content and generate multiple 2D projections of known 3D content. These projections are then sent to a graphics library, which facilitates the rendering of the projections on the stereoscopic display.
One difficulty in integrating custom stereoscopic rendering code into a conventional real-time graphics application is making the application compatible with a variety of different stereoscopic display. Achieving compatibility can be difficult because each manufacturer's stereoscopic display may have its own distinct set of rendering requirements. Therefore, custom stereoscopic rendering code must have to be provided for each manufacturer's stereoscopic display. The cost and complexity of a graphics application therefore increases as the amount of custom stereoscopic rendering code increases. Broad compatibility with a variety of stereoscopic displays can therefore be prohibitively expensive.
In addition, where a new stereoscopic display is produced subsequent to the release of the graphics application, compatibility with the new stereoscopic display will require the graphics application to be updated with new stereoscopic rendering code that is customized for the new stereoscopic display. The cost of such updating to a graphics application for compatibility with a new stereoscopic display can also be prohibitively expensive.